home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / ModeProSrc.lha / Daemon / Unnamed1 / 4.1 / MPReadArgs.c < prev    next >
C/C++ Source or Header  |  1996-06-12  |  3KB  |  127 lines

  1. #include <proto/dos.h>
  2. #include "MP.h"
  3.  
  4. BOOL    GetReadArgs(void);
  5. BOOL    RAYesNo(STRPTR Str, BOOL DefVal);
  6. ULONG   RAInt(ULONG *Val,ULONG DefVal);
  7. STRPTR  RAString(STRPTR Str, STRPTR DefVal);
  8. BOOL    GetToolTypes(int argc, char **argv);
  9.  
  10. struct RDArgs *RArgs=NULL;
  11.  
  12. UBYTE DefPrefsPath[]="sys:prefs/ModeProPrefs";
  13.  
  14. UBYTE RATemplate[]="CX_PRIORITY/N/K,CX_POPKEY/K,CX_POPUP/K,"
  15.                    "NLM=NEWLOOKMENUS/S,"
  16.                    "CPROG=CATCH_NEWPROGRAMS/S,CSCR=CATCH_NEWSCREENS/S,CPOP=CATCH_POPUP/S,"
  17.                    "PCMD=PREFSCOMMAND/K";
  18.  
  19. LONG RAResults[10]={0};
  20.  
  21. #define CX_PRIORITY 0
  22. #define CX_POPKEY   1
  23. #define CX_POPUP    2
  24. #define NLM         3
  25. #define CPROG       4
  26. #define CSCR        5
  27. #define CPOP        6
  28. #define PREFS       7
  29.  
  30. BOOL GetArgs(int argc, char **argv)
  31. {
  32.   if(argc) //cli
  33.     return(GetReadArgs());
  34.   return(GetToolTypes(argc,argv));
  35. }
  36.  
  37. void CleanupArgs(int argc)
  38. {
  39.   if(argc)
  40.   {
  41.     if(RArgs)
  42.       FreeArgs(RArgs);
  43.   }
  44.   else
  45.   {
  46.     ArgArrayDone();
  47.   }
  48. }
  49.  
  50. extern struct MPSem *MPSem;
  51. extern UBYTE  *Hotkey,Popup;
  52. extern BYTE   Priority;
  53. extern STRPTR PrefsPath;
  54.  
  55. BOOL GetReadArgs(void)
  56. {
  57.   if(RArgs=ReadArgs(RATemplate,RAResults,0))
  58.   {
  59.     Hotkey      =RAString((STRPTR)RAResults[CX_POPKEY],Hotkey);
  60.     Popup       =RAYesNo((STRPTR)RAResults[CX_POPUP],Popup);
  61.     Priority    =RAInt  ((ULONG *)RAResults[CX_PRIORITY],Priority);  
  62.     MPSem->EnabledNLM    =RAResults[NLM];
  63.     MPSem->CatchPrograms =RAResults[CPROG];
  64.     MPSem->CatchScreens  =RAResults[CSCR];
  65.     MPSem->CatchPopup    =RAResults[CPOP];
  66.     PrefsPath       =RAString((STRPTR)RAResults[PREFS],DefPrefsPath);
  67.  
  68.     return(TRUE);
  69.   }
  70.   else
  71.     PrintFault(IoErr(),0);
  72.   return(FALSE);
  73. }
  74.  
  75. BOOL RAYesNo(STRPTR Str, BOOL DefVal)
  76. {
  77.   if(Str)
  78.   {
  79.     switch(*Str)
  80.     {
  81.       case 'T':
  82.       case 't':
  83.       case 'Y':
  84.       case 'y':
  85.         return(~0);
  86.       case 'F':
  87.       case 'f':
  88.       case 'N':
  89.       case 'n':
  90.         return(0);
  91.     }
  92.   }
  93.   return(DefVal);
  94. }
  95.  
  96. ULONG RAInt(ULONG *Val,ULONG DefVal)
  97. {
  98.   if(Val)
  99.     return(*Val);
  100.   return(DefVal);
  101. }
  102.  
  103. STRPTR RAString(STRPTR Str, STRPTR DefVal)
  104. {
  105.   if(Str)
  106.     return(Str);
  107.   return(DefVal);
  108. }    
  109.  
  110. BOOL GetToolTypes(int argc, char **argv)
  111. {
  112.   UBYTE **ttypes;
  113.  
  114.   ttypes  =ArgArrayInit(argc,argv);
  115.  
  116.   Hotkey  =ArgString(ttypes,(UBYTE *)"CX_POPKEY",(UBYTE *)"lcommand p");
  117.   Priority=ArgInt   (ttypes,(UBYTE *)"CX_PRIORITY",0);
  118.   Popup   =ArgYesNo (ttypes,(UBYTE *)"CX_POPUP",TRUE);
  119.   MPSem->EnabledNLM=ArgYesNo(ttypes,(UBYTE *)"NEWLOOKMENUS",FALSE);
  120.   MPSem->CatchPrograms =ArgYesNo (ttypes,(UBYTE *)"CATCH_NEWPROGRAMS",FALSE);
  121.   MPSem->CatchScreens  =ArgYesNo (ttypes,(UBYTE *)"CATCH_NEWSCREENS",FALSE);
  122.   MPSem->CatchPopup    =ArgYesNo (ttypes,(UBYTE *)"CATCH_POPUP",FALSE);
  123.   PrefsPath   =ArgString    (ttypes,(UBYTE *)"PREFSCOMMAND",DefPrefsPath);
  124.  
  125.   return((BOOL)ttypes);
  126. }
  127.